Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add O_DIRECT support #79

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open

Add O_DIRECT support #79

wants to merge 4 commits into from

Conversation

bgly
Copy link
Contributor

@bgly bgly commented Mar 21, 2022

No description provided.

@bgly bgly requested a review from zabbo March 21, 2022 15:38
@versity-github
Copy link

@versity-github
Copy link

kmod/src/data.c Outdated Show resolved Hide resolved
kmod/src/data.c Outdated Show resolved Hide resolved
kmod/src/data.c Show resolved Hide resolved
kmod/src/data.c Outdated Show resolved Hide resolved
kmod/src/data.c Show resolved Hide resolved
kmod/src/data.c Outdated Show resolved Hide resolved
kmod/src/data.c Show resolved Hide resolved
kmod/src/data.c Outdated Show resolved Hide resolved
kmod/src/inode.c Outdated Show resolved Hide resolved
@@ -64,6 +64,8 @@ generic/029 # mmap missing
generic/030 # mmap missing
generic/075 # file content mismatch failures (fds, etc)
generic/080 # mmap missing
generic/091 # skip fsx tests
generic/094 # odirect streaming pre-alloc treated as failure in xfstests
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You know, I bet if we change the dio alloc_blocks to only allocate the size of the IO it'll fix these tests that were so cranky about our preallocation. It'd be worth trying them again once that's in place.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still no go on this one :/

@bgly bgly force-pushed the odirect branch 2 times, most recently from 71072c1 to 85e4b6c Compare March 23, 2022 21:53
@versity-github
Copy link

@versity-github
Copy link

@versity-github
Copy link

@versity-github
Copy link

@versity-github
Copy link

@versity-github
Copy link

@versity-github
Copy link

Bryant Duffy-Ly added 4 commits March 25, 2022 09:50
We want to first pass a mapping of unwritten extents to the blockdev_direct_IO
call. Then based upon the amount of bytes written we want to convert those
unwritten extents into written.
Currently if there is an extent on the last block the code will only set
EOF on ENOENT. In the case that the last block has an extent it wont go
to the next iteration due to iblock <= last. This then doesnt set the EOF
on the last block in these cases. We want to just allow the loop to keep
looping and rely on if (ext.start > last) to protect us from infinite loop.
In the buffered case page tail zeroing happens automatically.
In the O_DIRECT case it does not so we need to add it in our setattr
path just like EXT2. We want to zero the end of the block that contains
i_size during truncate, so we just call block_truncate_page in
set_inode_size.
@versity-github
Copy link

@bgly bgly requested a review from zabbo March 25, 2022 15:39
@versity-github
Copy link

Can one of the admins verify this patch?

@versity-github
Copy link

This won't automatically run in continuous integration without approval. A member of the Versity organization must allow it.

@aversecat aversecat added the enhancement New feature or request label Jul 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants